Computing systems typically include a processor executing instructions for performing various tasks, for example, communicating with other devices via an adapter. The adapter may send and receive information on behalf of the computing systems (may also be referred to as host systems).
The host system processor typically uses communication channels to communicate with the adapter. A channel is defined by a state that is maintained both by the host system and the adapter. Typically, a register dedicated to the channel is maintained by the adapter for facilitating communication between the host system and the adapter.
Typically, the host system sends a packet to the adapter with a request for performing a task. The packet is stored at the register dedicated to the communication channel. The adapter typically includes a processor that reads the packet and then performs the requested task.
As computing systems continue to operate in complex environments multiple channels may be used for communication between the host system and the adapter. Multiple registers are also used for storing packets received from the host system. To process the packets, the adapter processor has to determine which register has been updated at any given time.
One way the adapter processor may determine that a register has been written is by receiving interrupts, which can be time consuming and disruptive. Another method to determine if a register has been written or updated can be to poll the various registers and then determine which one has been updated. This can consume computing resources, especially if there are a large number of registers. Continuous efforts are being made to improve communication between the host system and an adapter.